package dao;

import classes.entidade.TipoAuditoria;
import conexao.GerenciadorConexao;
import erro.ConexaoException;
import erro.ConsultaException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author roberta.m.carvalho
 */
public class TipoAuditoriaDao {

    private GerenciadorConexao g;

    public TipoAuditoriaDao() {
        g = GerenciadorConexao.getInstancia();
    }

    public void inserirTipoAuditoria(TipoAuditoria ta) throws ConexaoException, ConsultaException {
        String sql = "INSERT INTO tipoauditoria(nome,sigla) "
                + "VALUES (?,?)";
        try {
            PreparedStatement pstm = (PreparedStatement) g.connect().prepareStatement(sql);
            pstm.setString(1, ta.getNome());
            pstm.setString(2, ta.getSigla());
            pstm.executeUpdate();
        } catch (SQLException ex) {
            throw new ConsultaException(ex);
        } finally {
            g.disconnect();
        }
    }

    public void alterarTipo(TipoAuditoria ta) throws ConexaoException, ConsultaException {
        String sql = "UPDATE tipoauditoria SET nome=?,sigla=? WHERE idtipoAuditoria=?";
        try {
            PreparedStatement pstm = (PreparedStatement) g.connect().prepareStatement(sql);
            pstm.setString(1, ta.getNome());
            pstm.setString(2, ta.getSigla());
            pstm.setInt(3, ta.getIdTipo());
            pstm.executeUpdate();
        } catch (SQLException ex) {
            throw new ConsultaException(ex);
        } finally {
            g.disconnect();
        }
    }

    public ArrayList<TipoAuditoria> listarTipo() throws ConexaoException, ConsultaException {
        ArrayList<TipoAuditoria> lista = new ArrayList<TipoAuditoria>();
        TipoAuditoria tipo;
        String sql = "SELECT * "
                + "FROM tipoauditoria order by sigla asc";
        try {
            Statement stm = (Statement) g.connect().createStatement();
            ResultSet rs = stm.executeQuery(sql);
            while (rs.next()) {
                tipo = new TipoAuditoria();
                tipo.setIdTipo(rs.getInt("idtipoAuditoria"));
                tipo.setNome(rs.getString("nome"));
                tipo.setSigla(rs.getString("sigla"));
                lista.add(tipo);
            }
        } catch (SQLException ex) {
            throw new ConsultaException(ex);
        } finally {
            g.disconnect();
        }
        return lista;
    }

    public void deletarTipo(TipoAuditoria ta) throws ConexaoException, ConsultaException {
        String sql = "DELETE FROM tipoauditoria where idtipoAuditoria =?";
        try {
            PreparedStatement pstm = (PreparedStatement) g.connect().prepareStatement(sql);
            pstm.setInt(1, ta.getIdTipo());
            pstm.executeUpdate();
        } catch (SQLException ex) {
            throw new ConsultaException(ex);
        } finally {
            g.disconnect();
        }
    }
}
